#ifndef MWAVEWIDGET_H
#define MWAVEWIDGET_H

#include "contentwidget.h"
#include "mwaveview.h"


class MWaveWidget : public ContentWidget
{
public:
    MWaveWidget(QWidget *parent = nullptr);

private:
    void addChannel(WAVE_CH ch);
    void updateRange(void);

    // 追加某个通道的坐标点
    void addSeriesData(WAVE_CH ch, const QPointF& point);
    // 传入某个通道的波形
    void addSeriesData(WAVE_CH ch, const QList<QPointF>& point_list);
    // 设置X轴范围放大倍数,默认1.2，不可为0，对应缩小为1/multiple
    void setZoomX(double multiple);
    // 设置Y轴范围放大倍数，默认1.2，不可为0，对应缩小为1/multiple
    void setZoomY(double multiple);

    // X轴范围按比例缩小
    void ZoomOutX(void);
    // X轴范围按比例放大
    void ZoomX(void);

    // Y轴范围按比例缩小
    void ZoomOutY(void);
    // Y轴范围按比例放大
    void ZoomY(void);

    // 波形开始
    void startGraph(void);
    // 波形暂停
    void pauseGraph(void);

public slots:
    // 波形开始槽函数
    void slots_startGraph(void);
    // 波形暂停槽函数
    void slots_pauseGraph(void);

protected:
    // 事件重写
    virtual void mouseMoveEvent(QMouseEvent *pEvent) override;
    virtual void mousePressEvent(QMouseEvent *pEvent) override;
    virtual void mouseReleaseEvent(QMouseEvent *pEvent) override;
    virtual void wheelEvent(QWheelEvent *pEvent) override;
    virtual void contextMenuEvent(QContextMenuEvent *event) override;

private slots:
    void onMsGetTimeOut();

private:
    QBoxLayout      *wave_layout;
    Wave            m_wave;
    Event           m_event;


    QTimer*  mvGetTimer;
    QList<QPointF> wave_data[16];


};

#endif // MWAVEWIDGET_H
